﻿using Newtonsoft.Json;

namespace TY.UT.Push.YouMeng
{
    /// <summary>
    /// ios推送消息模型
    /// </summary>
    public class IosMsgModel : BaseModel
    {
        /// <summary>
        /// // 必填 消息内容(iOS最大为2012B), 包含参数说明如下(JSON格式):
        /// </summary>
        [JsonProperty("payload")]
        public IosPayLoad PaLoadMsg { get; set; }

        /// <summary>
        /// // 可选 发送策略
        /// </summary>
        [JsonProperty("policy")]
        public IosPolicy PolicySet { get; set; }

        /// <summary>
        /// // 可选 发送消息描述，建议填写。
        /// </summary>
        [JsonProperty("description")]
        public string Description { get; set; }

        /// <summary>
        /// // 可选 正式/测试模式。测试模式下，广播/组播只会将消息发给测试设备。
        /// 测试设备需要到web上添加。
        /// iOS: 测试模式对应APNs的开发环境(sandbox),
        /// 正式模式对应APNs的正式环境(prod), 
        /// 正式、测试设备完全隔离。
        /// </summary>
        [JsonProperty("production_mode")]
        public string ProductMode { get; set; }

        //[JsonProperty("thirdparty_id")]
        //public string ThirdpartyId { get; set; }
    }

    /// <summary>
    /// 消息内容实体
    /// </summary>
    public class IosPayLoad
    {
        /// <summary>
        /// 必填 严格按照APNs定义来填写
        /// </summary>
        [JsonProperty("aps")]
        public IosMsg Msg { get; set; }

        /// <summary>
        /// 自定义json消息
        /// </summary>
        //public string Customer { get; set; }
    }

    /// <summary>
    /// IOS APNs实体
    /// </summary>
    public class IosMsg
    {
        /// <summary>
        /// 推送内容
        /// </summary>
        [JsonProperty("alert")]
        public string Alert { get; set; }
        /// <summary>
        /// 边角号
        /// </summary>
        [JsonProperty("badge")]
        public int Badge { get; set; }

        /// <summary>
        /// 音效
        /// </summary>
        //[JsonProperty("sound")]
        //public string Sound { get; set; }

        /// <summary>
        /// 
        /// </summary>
        //[JsonProperty("content-available")]
        //public int ContentAvailable { get; set; }

        /// <summary>
        /// 
        /// </summary>
        //[JsonProperty("category")]
        //public string Category { get; set; }
    }

    /// <summary>
    ///发送策略实体
    /// </summary>
    public class IosPolicy
    {
        //[JsonProperty("start_time")]
        //public string StartTime { get; set; }

        /// <summary>
        /// 可选 消息过期时间,其值不可小于发送时间,
        /// 默认为3天后过期。格式同start_time
        /// </summary>
        [JsonProperty("expire_time")]
        public string ExpireTime { get; set; }

        //[JsonProperty("max_send_num")]
        //public int MaxSendNum { get; set; }
    }
}
